//
//  ZXZDataBaseTools.swift
//  数据库01
//
//  Created by Mac on 16/10/25.
//  Copyright © 2016年 www.ZXZ123.com. All rights reserved.
//

import UIKit

/// 数据库的操作

/// 1. 数据库本质是保存在沙盒的一个文件, 首先要创建并且打开数据库  使用队列

/// 2. 创建数据表

/// 3. 增删改查
class ZXZDataBaseTools {
    // 创建一个单例
    static var shareDataBase:ZXZDataBaseTools = ZXZDataBaseTools()

    //创建一个队列 操作是在队列中执行的
    let dataBaseQueue:FMDatabaseQueue

    // 打开一个数据库 我们开始创建一个数据表
    private init() {
        // 数据库的名字
        let dbName:String = "test.db"
        var path:String = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0]

        path = (path as NSString).appendingPathComponent(dbName)

        // 创建数据库队列 如果没有数据库 直接创建一个 如果存在就直接打开
        dataBaseQueue = FMDatabaseQueue(path: path)
    }
}

extension ZXZDataBaseTools{

    // 创建一个数据表
    func  createDataList() -> () {
        // 加载sql
        guard let sqlPath = Bundle.main.path(forResource: "status.sql", ofType: nil),
            let sql = try? String(contentsOfFile: sqlPath)
            else {
                print("加载sql的数据失败")
                return
        }


        // 执行sql创建队列  FMDB的队列是串行队列
        // 可以保证同一时间, 只有一个任务操作数据库, 从而保证数据的读写安全
        dataBaseQueue.inDatabase { (dataBase) in
            if (dataBase?.executeStatements(sql))!{
                print("创建表成功")
            }
            else{
                print("创建表失败")
            }
        }
        
        print("Over")
        
    }
}
